草庐IT

SciPy 插值

全部标签

python - scipy.optimize.minimize(method='trust-constr') 不会在 xtol 条件下终止

我已经建立了一个具有线性等式约束的优化问题如下sol0=minimize(objective,x0,args=mock_df,method='trust-constr',bounds=bnds,constraints=cons,options={'maxiter':250,'verbose':3})objective是加权和函数,其系数/权重将被优化以使其最小化。由于我在系数和约束上有边界,所以我使用了trust-constrscipy.optimize.minimize内的方法.最小化可行,但我不明白终止条件。根据trust-constrdocumentation它应该终止于xtol

python - kind 参数的不同值在 scipy.interpolate.interp1d 中意味着什么?

SciPydocumentation解释了interp1d的kind参数可以取值'linear','nearest',“零”、“线性”、“二次”、“立方”。最后三个是样条阶数,'linear'是不言自明的。'nearest'和'zero'有什么作用? 最佳答案 nearest“捕捉”到最近的数据点。zero是零阶样条。它在任何时候的值(value)都是最后看到的原始值(value)。linear执行线性插值,slinear首先使用订单样条。他们使用不同的代码和canproducesimilarbutsubtlydifferentre

python - 使用 numpy/scipy 的快速 b 样条算法

我需要在python中计算bspline曲线。我查看了scipy.interpolate.splprep和其他一些scipy模块,但找不到任何可以轻松满足我需要的东西。所以我在下面写了我自己的模块。代码工作正常,但速度很慢(测试函数在0.03秒内运行,考虑到我只要求100个样本和6个控制顶点,这似乎很多)。有没有办法通过一些scipy模块调用来简化下面的代码,这可能会加快速度?如果没有,我可以对我的代码做些什么来提高它的性能?importnumpyasnp#cv=np.arrayof3dcontrolvertices#n=numberofsamples(default:100)#d=c

python - python中的对数插值

使用numpy.interp我能够计算在离散数据点处具有给定值的函数的一维分段线性插值。返回我的对数插值是不是类似的函数? 最佳答案 在过去,我只是将普通插值包装在对数空间中,即deflog_interp(zz,xx,yy):logz=np.log10(zz)logx=np.log10(xx)logy=np.log10(yy)returnnp.power(10.0,np.interp(logz,logx,logy))就我个人而言,我更喜欢scipyinterpolationfunctions(正如@mylesgallagher提到的

python - 使用 numpy.interp 的线性插值

我有一个float的一维数组A,它大部分都很好,但缺少一些值。丢失的数据被替换为nan(不是数字)。我必须通过附近良好值的线性插值来替换数组中的缺失值。所以,例如:F7(np.array([10.,20.,nan,40.,50.,nan,30.]))应该返回np.array([10.,20.,30.,40.,50.,40.,30.]).使用Python执行此操作的最佳方法是什么?任何帮助将不胜感激谢谢 最佳答案 你可以使用scipy.interpolate.interp1d:>>>fromscipy.interpolateimpor

python - 奇怪的 SciPy ODE 集成错误

我正在实现一个非常简单的Susceptible-Infected-Recovered模型,该模型具有用于闲置项目的稳定人口-通常是一项非常微不足道的任务。但是我在使用PysCeS或SciPy时遇到了求解器错误,它们都使用lsoda作为它们的底层求解器。这只发生在参数的特定值上,我很困惑为什么。我使用的代码如下:importnumpyasnpfrompylabimport*importscipy.integrateasspi#ParameterValuesS0=99.I0=1.R0=0.PopIn=(S0,I0,R0)beta=0.50gamma=1/10.mu=1/25550.t_en

python - Scipy 稀疏 Cumsum

假设我有一个scipy.sparse.csr_matrix代表下面的值[[00120304][10020340]]我想就地计算非零值的累积和,这会将数组更改为:[[001306010][100306100]]实际值不是1,2,3,...每行中非零值的数量不太可能相同。如何快速做到这一点?当前程序:importscipy.sparseimportnumpyasnp#sparsedataa=scipy.sparse.csr_matrix([[0,0,1,2,0,3,0,4],[1,0,0,2,0,3,4,0]],dtype=int)#methodindptr=a.indptrdata=a.

python - 在多处理池中运行 scipy.integrate.ode 会导致巨大的性能损失

我正在使用python的scipy.integrate来模拟29维线性微分方程组。由于我需要解决多个问题实例,我想我可以通过使用multiprocessing.Pool并行计算来加快速度。由于线程之间不需要共享数据或同步(问题是令人尴尬的并行),我认为这显然应该可行。然而,在我编写了执行此操作的代码之后,我得到了非常奇怪的性能测量值:单线程,无jacobian:每次调用20-30毫秒单线程,使用jacobian:每次调用10-20毫秒多线程,没有jacobian:每次调用20-30毫秒多线程,使用jacobian:每次调用10-5000毫秒令人震惊的是,我认为应该是最快的设置,实际上是

python - 从 scipy 稀疏矩阵中过滤值

我正在尝试从巨大的(1Mx1M)CSR矩阵(SciPy)中过滤小于10的值。由于我所有的值都是整数,除以10再乘以10就可以了,但我想知道是否有更好的方法来过滤元素。编辑:下面的答案有效。检查您是否拥有最新版本的SciPy。 最佳答案 你也可以选择不那么笨拙但可能更慢的方法:m=m.multiply(m>=10)要了解发生了什么:>>>m=scipy.sparse.csr_matrix((1000,1000),dtype=np.int)>>>m[np.random.randint(0,1000,20),np.random.randi

python - 在 python/numpy/scipy 中生成低差异准随机序列?

有alreadyaquestion关于这个,但答案包含一个断开的链接,并且已经超过两年了,我希望现在有更好的解决方案:)低差异准随机序列,例如Sobol序列比均匀随机序列更均匀地填充空间。有没有一种好的/简单的方法可以在python中生成它们? 最佳答案 我认为Python中低差异序列的最佳替代方案是灵敏度分析库(SALib):https://github.com/SALib/SALib我认为这是一个活跃的项目,您可以联系作者以检查您需要的功能是否已经实现。如果这不能解决您的问题,CorradoChisari将一个用Matlab(由